package com.qwt.part_time_api.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.Executor;

/**
 * @Author 君子慎独
 * @create 2021/11/23 0023 14:20
 * 线程池配置
 */
@Configuration
// 开启线程池
@EnableAsync
public class ThreadPoolConfig {

    @Bean("taskExecutor")
    public Executor asyncServiceExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();

        //    设置核心线程数
        executor.setCorePoolSize(5);

        //    设置最大线程数
        executor.setMaxPoolSize(20);

        //    设置队列大小
        executor.setQueueCapacity(Integer.MAX_VALUE);

        //    设置线程活跃时间 秒
        executor.setKeepAliveSeconds(60);

        //    设置默认线程名称
        executor.setThreadNamePrefix("隐心");

        //   等待私有任务结束后在关闭线程
        executor.setWaitForTasksToCompleteOnShutdown(true);

        // 执行初始化
        executor.initialize();

        return executor;
    }
}
